/*
 * Matrix.h
 *
 *  Created on: Feb 15, 2011
 *      Author: alki
 */

#ifndef MATRIX_H_
#define MATRIX_H_

#include "Vektor.h"

/**
 * Klasse Matrix: Matrix im IR^3
 */
class Matrix {
public:
	Matrix();
	virtual ~Matrix();

	/**
	 * Multiplikation mit Vektor/Matrix/Skalar, bzw. Division durch Skalar
	 */
	Vektor operator*(const Vektor &v);
	Matrix operator*(const Matrix &m);
	Matrix operator*(float f);
	Matrix operator/(float f) { return *this*(1/f); }

	/**
	 * berechnet die Determinante
	 */
	float Det();

	/**
	 * berechnet die inverse Matrix
	 */
	Matrix Inv();

	/**
	 * DEBUG: Ausgabe auf Konsole
	 */
	void out();

	/**
	 * Die Felder der Matrix
	 */
	float a_11,a_12,a_13;
	float a_21,a_22,a_23;
	float a_31,a_32,a_33;
};

#endif /* MATRIX_H_ */
